package com.blog.mapper;

import com.blog.bean.domain.DiscussPost;
import com.blog.bean.vo.PageVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 任浩
 * @version 1.0
 */

@Repository
@Mapper
public interface DiscussPostMapper {

    /**
     * 进行分页查询，把返回的数据返回给首页显示。
     * @param
     * @return
     */
    Page<DiscussPost> queryPost(@Param("userId") String userId,@Param("scoreMode") Integer scoreMode);

    /**
     * 根据用户id查询用户信息.
     * @param userId
     * @return
     */
    PageVO selectById(@Param("userId") Integer userId);

    /**
     * 发布帖子。
     * @param discussPost
     */
    void add(DiscussPost discussPost);


    /**
     * 查询帖子的详细信息。
     * @param userId
     * @param title
     */
    PageVO queryPostDetail(String userId, String title);

    /**
     * 修改帖子评论数的方法。
     * @param entityId
     */
    void updateNum(@Param("id") Integer entityId);

    /**
     * 通过帖子id，查找帖子的信息。
     * @param discussPost
     * @return
     */
    DiscussPost queryPostByPostId(DiscussPost discussPost);

    /**
     * 根据用户id，查询用户发布的所有的帖子。
     * @param discussPost
     * @return
     */
    List<DiscussPost> queryPostByUserId(DiscussPost discussPost);

    /**
     * 对帖子进行置顶的操作
     * @param postId
     */
    void setTop(@Param("id") Integer postId);

    /**
     * 对帖子进行加精操作
     * @param postId
     */
    void setWonderful(@Param("id") Integer postId);

    /**
     * 对帖子的删除操作
     * @param postId
     */
    void delete(@Param("id") Integer postId);

    /**
     * 将分数保存到数据库中。
     * @param discussPost
     */
    void updateScore(DiscussPost discussPost);

    void updateViewCount(@Param("id") Integer postId, @Param("viewCount") Integer viewCount);
}
